// Room 6: Ending

#include "defines.txt"
#define temp v255
#define ending_music_completed f251
#define to_be_continued_at_top f252
#define to_be_continued_at_bottom f253
#define slice1_obj o1
#define slice2_obj o2
#define slice3_obj o3
#define slice4_obj o4
#define slice5_obj o5
#define slice6_obj o6
#define slice7_obj o7
#define slice8_obj o8
#define slice9_obj o9
#define slice10_obj o10
#define slice11_obj o11
#define slice12_obj o12
#define to_be_continued_obj o13

if (new_room) {

  temp = opening_screen;
  load.pic(temp);
  draw.pic(temp);
  discard.pic(temp);
  status.line.off();
  prevent.input();
  program.control();
  disable.item(menu_save);
  disable.item(menu_seeobject);
  disable.item(menu_normalspeed);
  disable.item(menu_fastestspeed);
  disable.item(menu_fastspeed);
  disable.item(menu_slowspeed);
  cycle_delay = speed_fastest;

  load.sound(ending_music);

  load.view(60);
  load.view(61);

  animate.obj(to_be_continued_obj);
  set.view(to_be_continued_obj, 61);
  set.priority(to_be_continued_obj, 14);
  ignore.objs(to_be_continued_obj);
  ignore.blocks(to_be_continued_obj);
  ignore.horizon(to_be_continued_obj);
  position(to_be_continued_obj, 20, 27);
  draw(to_be_continued_obj);

  animate.obj(slice1_obj);
  animate.obj(slice2_obj);
  animate.obj(slice3_obj);
  animate.obj(slice4_obj);
  animate.obj(slice5_obj);
  animate.obj(slice6_obj);
  animate.obj(slice7_obj);
  animate.obj(slice8_obj);
  animate.obj(slice9_obj);
  animate.obj(slice10_obj);
  animate.obj(slice11_obj);
  animate.obj(slice12_obj);

  set.view(slice1_obj, 60);
  set.view(slice2_obj, 60);
  set.view(slice3_obj, 60);
  set.view(slice4_obj, 60);
  set.view(slice5_obj, 60);
  set.view(slice6_obj, 60);
  set.view(slice7_obj, 60);
  set.view(slice8_obj, 60);
  set.view(slice9_obj, 60);
  set.view(slice10_obj, 60);
  set.view(slice11_obj, 60);
  set.view(slice12_obj, 60);

  set.cel(slice1_obj, 0);
  set.cel(slice2_obj, 1);
  set.cel(slice3_obj, 2);
  set.cel(slice4_obj, 3);
  set.cel(slice5_obj, 4);
  set.cel(slice6_obj, 5);
  set.cel(slice7_obj, 6);
  set.cel(slice8_obj, 7);
  set.cel(slice9_obj, 8);
  set.cel(slice10_obj, 9);
  set.cel(slice11_obj, 10);
  set.cel(slice12_obj, 11);

  set.priority(slice1_obj, 13);
  set.priority(slice2_obj, 13);
  set.priority(slice3_obj, 13);
  set.priority(slice4_obj, 13);
  set.priority(slice5_obj, 13);
  set.priority(slice6_obj, 13);
  set.priority(slice7_obj, 13);
  set.priority(slice8_obj, 13);
  set.priority(slice9_obj, 13);
  set.priority(slice10_obj, 13);
  set.priority(slice11_obj, 13);
  set.priority(slice12_obj, 13);

  ignore.objs(slice1_obj);
  ignore.objs(slice2_obj);
  ignore.objs(slice3_obj);
  ignore.objs(slice4_obj);
  ignore.objs(slice5_obj);
  ignore.objs(slice6_obj);
  ignore.objs(slice7_obj);
  ignore.objs(slice8_obj);
  ignore.objs(slice9_obj);
  ignore.objs(slice10_obj);
  ignore.objs(slice11_obj);
  ignore.objs(slice12_obj);

  ignore.horizon(slice1_obj);
  ignore.horizon(slice2_obj);
  ignore.horizon(slice3_obj);
  ignore.horizon(slice4_obj);
  ignore.horizon(slice5_obj);
  ignore.horizon(slice6_obj);
  ignore.horizon(slice7_obj);
  ignore.horizon(slice8_obj);
  ignore.horizon(slice9_obj);
  ignore.horizon(slice10_obj);
  ignore.horizon(slice11_obj);
  ignore.horizon(slice12_obj);

  position(slice1_obj, 24, 38);
  position(slice2_obj, 24, 48);
  position(slice3_obj, 24, 58);
  position(slice4_obj, 24, 68);
  position(slice5_obj, 24, 78);
  position(slice6_obj, 24, 88);
  position(slice7_obj, 24, 98);
  position(slice8_obj, 24, 108);
  position(slice9_obj, 24, 118);
  position(slice10_obj, 24, 128);
  position(slice11_obj, 24, 138);
  position(slice12_obj, 24, 147);

  stop.cycling(slice1_obj);
  stop.cycling(slice2_obj);
  stop.cycling(slice3_obj);
  stop.cycling(slice4_obj);
  stop.cycling(slice5_obj);
  stop.cycling(slice6_obj);
  stop.cycling(slice7_obj);
  stop.cycling(slice8_obj);
  stop.cycling(slice9_obj);
  stop.cycling(slice10_obj);
  stop.cycling(slice11_obj);
  stop.cycling(slice12_obj);

  draw(slice1_obj);
  draw(slice2_obj);
  draw(slice3_obj);
  draw(slice4_obj);
  draw(slice5_obj);
  draw(slice6_obj);
  draw(slice7_obj);
  draw(slice8_obj);
  draw(slice9_obj);
  draw(slice10_obj);
  draw(slice11_obj);
  draw(slice12_obj);

  show.pic();

  // Horizontal movement: assign values to variables v50...v247

  set(f254);
  set(f255);
  v46 = 1;
  v47 = v46;
  v48 = 24;
  v49 = 49;
  Loop1:
  v49++;
  *v49 = v48;
  v47--;
  if (v47 == 0) {
    if (f255) {
      v48++;
    } else {
      v48--;
    }
    if (f254) {
      v46++;
    } else {
      v46--;
    }
    if (v46 == 10) {
      reset(f254);
      if (f255) {
        reset(f255);
      } else {
        set(f255);
      }
    }
    if (v46 == 1) {
      set(f254);
    }
    v47 = v46;
  }
  if (v49 < 247) {
    goto(Loop1);
  }

  set(to_be_continued_at_top);
  reset(to_be_continued_at_bottom);

  set(ending_music_completed);
}

if (ending_music_completed) {
  sound(ending_music, ending_music_completed);
}

// Shift variables

v49 = 49;
v248 = v50;
Loop2:
v49++;
v48 = v49;
v48++;
v47 = *v48;
*v49 = v47;
if (v49 < 246) {
  goto(Loop2);
}
v247 = v248;

// Reposition views for horizontal movement

temp = 38;
reposition.to.v(slice1_obj, v201, temp);
temp += 10;
reposition.to.v(slice2_obj, v202, temp);
temp += 10;
reposition.to.v(slice3_obj, v203, temp);
temp += 10;
reposition.to.v(slice4_obj, v204, temp);
temp += 10;
reposition.to.v(slice5_obj, v205, temp);
temp += 10;
reposition.to.v(slice6_obj, v206, temp);
temp += 10;
reposition.to.v(slice7_obj, v207, temp);
temp += 10;
reposition.to.v(slice8_obj, v208, temp);
temp += 10;
reposition.to.v(slice9_obj, v209, temp);
temp += 10;
reposition.to.v(slice10_obj, v210, temp);
temp += 10;
reposition.to.v(slice11_obj, v211, temp);
temp += 9;
reposition.to.v(slice12_obj, v212, temp);

// Vertical movement

if (to_be_continued_at_top) {
  reset(to_be_continued_at_top);
  set.priority(to_be_continued_obj, 14);
  move.obj(to_be_continued_obj, 20, 159, 1, to_be_continued_at_bottom);
}

if (to_be_continued_at_bottom) {
  reset(to_be_continued_at_bottom);
  set.priority(to_be_continued_obj, 12);
  move.obj(to_be_continued_obj, 20, 27, 1, to_be_continued_at_top);
}

return();